Short: (0.5) Major update. MSN Messenger client Author: ignorethisbit@mickjt AT ihug.com.au (Michael Trebilcock) Uploader: ignorethisbit@mickjt AT ihug.com.au (Michael Trebilcock) Version: 0.5 Type: comm/tcp Replaces: util/rexx/AmiMSN* Introduction ============ Well, I was bored one day and decided to look up the MSN Messenger protocol and write a client for it. Sorry it's all in AREXX, but I get bored quickly while reading C tutorials. This whole program is a simple experiment to simply prove I could actually write this in AREXX. Don't expect anything remotely good, I cannot do a GUI for it because of asynchronousity issues with AWNPIPE. (New to 0.5) HOWEVER. Read below for a nice major update ;) Perhaps this will inspire someone to write a much better client in C. .. or then again, they won't because it's all Microsloth s**t ;) FYI, I hate Microsoft... and they keep changing the protocol without updating the protocol version.. fkn hell ;) Installation ============ Place AmiMSN and AmiMSN-IM.rexx in a directory of your choice, and edit the AmiMSN.cfg file. The "Allow" option in the .cfg is needed to make sure no outside access is permitted to AmiMSN's IRCd. Normally keep this at 127.0.0.1 unless you are connecting from a LAN. Features ======== - Asynchronous TCP, read and write at the same time. - IRCd mode similar to BitlBee but better IRC compliance. - Add/Remove/Rename groups and people on your contact list. - List the status of everyone on your contact list. - Status sorting (Online users shown first in contact list). - Uses automatic adding and privacy settings. - Command to save settings/database in a human readable form. - TCP stack independant. - Communicates directly with the MSN servers, no need for a Jabber account or the like. - Debug option to save all MSN server I/O to a log file. - Communicates in MSNP10 (many other clients use MSNP8). History ======= 0.5 (27 May 04): - DETAILS command fixed. Checking for Automatic adding setting was the wrong way around. - DETAILS command now shows both group number and group ID. - LIST command now shows changes from REMGROUP/ADDGROUP/RENGROUP. - Small automatic adding bug fix. - No longer requires MiamiNetStat. Found an example non-blocking script that uses RxSocket.library, and learnt how to do asynchronous arexx from that. This is a major update as Miami(Dx) is no longer required to be running. As a result, conversations will have less lag. You can now use this within WinUAE and other emulators with an emulated bsdsocket.library. - TCP: device is no longer a requirement. - Converts unicode characters to ansi in conversations. - Debug log file option. Enable by adding Debug = 1 to .cfg file. - !! IRC daemon mode !! Read below in Usage for more information. - Pings the server every 60 seconds to prevent server from disconnecting you after being away for too long. - AUTO and PRIVACY command now case-insensitive. - Fixed: You can now initiate conversations in rapid succession. - Fixed a bug when listing contact list after adding someone to it after someone changed their status since you logged on. Follow me? heh 0.4: - Now works with normal AND migrated accounts. ^^ If your account is not migrated, you may need to delete the AmiMSN.db file and have it re-generated again. - LIST now shows people not in a group. - Contact list now sorted with people Online shown first. - New commands ADDUSER, REMUSER, ADDGROUP, REMGROUP RENGROUP, HELP, OUT and RAW - Local contact list (LIST) updated after add/remove. ^^ Doesn't work with ADDGROUP/REMGROUP/RENGROUP yet. - Fixed potential problems when you first connect and change a setting or start a conversation before the server sends you a challenge ping. - More error checking. - AmiMSN now compressed into an exe, and configuration settings placed in AmiMSN.cfg - Fixed small problem with "Lost connection to" before a conversation even starts. - MiamiNetStat now used every 4 seconds instead of 5. - DETAILS command now fixed for people who aren't on your FL list. 0.3: - "On The Phone" & "Out To Lunch" status bugs fixed. - Re-coded to work with the newly introduced MSNP10 protocol 0.2: - "Hidden" status bug fixed - Rename your nickname added - Checks for MD5SUM, and quits if it cannot find it - DETAILS command now reads from memory and saves to file - PRIVACY and AUTO commands added - Optimizations here and there - Nickname is shown when someone goes offline - LIST now sorts people into their groups - MiamiNetStat is now protected from deletion - Usage for REMOVE command fixed - Only one MNS.tmp file for all connections - Removed unnecessary Say() function in AmiMSN-IM.rexx - GTC (aka AUTO) setting now takes affect - Invite people into your conversation. 0.1: - First aminet release Todo ==== - Conversations will stealth re-join when needed ^^ Currently this is only done with the IRC interface. - Contact list/settings management in IRCd mode. - Automatic ANSI<->Unicode charset translation. Not Todo ======== - Avatar support - File transfer - MSN chat room support - Emoticons support * Above is what I DO plan on NOT incorporating ;)) * Bugs ==== - None known. Usage ===== When you run AmiMSN, it will connect, and then show a command list. Type a command to show the usage. AmiMSN can now act as an IRC server. Each group will appear as a channel, and the contacts in that group will appear as users in the channel. Opped users are Online. Voiced users are Away or Busy, and standard users are Offline. To send a message to a contact, just private message them as you normally would any other user on IRC. To run as an IRC server, type "AmiMSN IRCd", then simply point AmIRC to server 127.0.0.1 port 6667. This IRC daemon mode provides AmiMSN with some extra features: - Any IRC client can now act as AmiMSN's GUI. - The WHOIS command shows Idle and Signon times for each contact. - IRC client features such as sounds can be used, etc.. Requirements ============ rxsocket.library rexxdossupport.library rexxreqtools.library rexxsupport.library MD5SUM (requires ixemul.library) Glossary ======== (FL) Forward list = People on your contact list (RL) Reverse list = People who have you on their contact list (BL) Block list = People you have blocked from seeing you online (AL) Allow list = People who are allowed to see you online (PL) ? Unknown! Anyone know what this is?